Systems of simultaneous equations, systems of interrelated logic sentences, and other problems that involve interrelated or inter-constrained sub-problems can often be solved with known straightforward techniques, provided that the problem can be centralized or that the solution is under the control of one entity. However, multi-part problems can be difficult to solve when different entities, decision makers, computers, nodes, processors, agents, robots, etc. each control different sub-problems or sub-parts of a global problem. These distributed problems are sometimes referred to as distributed constraint satisfaction problems, distributed constraint optimization problems, or more generally distributed constraint problems. Distributed constraint problems are often distributed because of real world circumstances. Consider some examples.
A group of robots may need to work together to perform a task such as gathering and arranging the disparate parts needed for a mechanical assembly. Each robot may need to decide which part to pick up based on local considerations such as location, ability to grasp a type of part, etc. Yet each robot's decision will need to comport with the decisions of other robots. For example, one robot should not try to move toward a part if another robot has decided to pick up that part. The robots need to make individual decisions that satisfy the constraints of other robot's decisions, yet those individual decisions must together solve the global problem, in this case gathering and arranging of the needed parts.
Finding a time that satisfies multiple different schedules is another example of a distributed constraint problem. Suppose that a commonly available time must be found for different schedules A, B, and C. However, due to communication barriers or privacy considerations, A, B, and C may not be able to share their respective schedules. Therefore, A proposes various times, say to B, until B replies with agreement. When B agrees, B proposes the time to C, if C agrees then a global solution is found. Each may also have various local individual requirements. For example, to meet with A, B may need to meet in a location that is only available at certain times.
Distributed decision making is another example of a distributed constraint problem. For example, a new vehicle's specifications may need to be determined by a command structure that has an engineering department, a design department, and a marketing department. A department makes an individual decision about the specifications of the vehicle that satisfies that department's constraints about the vehicle. At the same time, depending on the relative priorities of the different departments, each department's decision constrains (or is constrained by) the decision of another department.
There are many other examples of distributed constraint problems. For example, coordination in sensor networks, handling of telephone calls by pieces of telecommunication equipment, and so on. In the case of sensor coordination, the sensors may have overlapping areas that they can sense and the sensors may need to decide amongst themselves which sensors will cover which areas. In sum, the types of problems mentioned above are naturally decentralized or distributed due to factors such as autonomy, privacy, communication, etc.
Distributed constraint problems can be solved using various known modeling and search techniques. FIG. 1 shows how a distributed constraint problem can be modeled. In FIG. 1, each node 50 is assumed to be able to communicate with other nodes using a communication medium 52, for example a data communication network, a system bus, a wireless telephony network, etc. Each node 50 corresponds to or resides within some autonomous entity, agent, device, etc. Each node 50 is responsible for finding some corresponding sub-part of a global solution. That is, each node 50 has some calculation or decision that it must make, as constrained by or constrained to the decision or calculation of another node 50. The local solutions of the various nodes 50 together form the global solution. In FIG. 1, inter-node constraints 54 are shown as lines connecting the nodes 50. For example, in the vehicle specification scenario mentioned above, node1 may be the engineering department and may be responsible for determining engine power, node2 may be the design department and may be responsible for determining hood size, and node3 may be the marketing department that determines the style of the hood. Each may constrain or be constrained by decisions of another.
A node may be responsible for determining multiple parameters of the global problem. In FIG. 1, node1 is responsible for determining values for variables x1, y1, and z1; node2 is responsible for determining values for variables x2, y2, and z2; node 3 is responsible for determining values for variables x3 and y3; and so on. Each node has at least one variable whose value is constrained by the value of another node's variable. In the example shown in FIG. 1, variables x1 and x2 have a constraint 56 that their values must be equal. Variables x2 and y3 have a constraint 58 that their values must be unequal. Other nodes also have variables and inter-node constraints. Each node may also have internal constraints that their local solution must satisfy. For example, node2 may require that y2 have a value of 1, 2, or 3 and be equal to z2. A global solution will meet the internal or private constraints or requirements of each node and all of the inter-node constraints.
FIG. 2 shows a technique for searching nodes to solve a distributed constraint problem. Usually, any ordering or prioritization can be used to find some solution. The arrows connecting nodes in FIG. 2 represent a possible ordering of the constraints 54 shown in FIG. 1. In FIG. 2, the nodes 50 are given an ordering by priority; node1 has highest priority, and node9 has lowest priority. Searching is one technique for finding a solution to a distributed constraint problem. Searching requires an order be given to the different nodes. Often, the most constrained node will be given the highest priority.
A search proceeds by the highest priority node first making a decision or calculation. In FIG. 2, node1 initiates the search with an initial decision process 70 of making 72 a decision or determination that satisfies node1's internal requirements and then forwarding 74 the decision or determination (e.g., a value of a variable) to the other nodes next in priority, in this case, node2, node3, and node4. The nodes below node1 perform a constrained decision or determination process 76, comprising receiving 78 a decision from a next-highest priority node (a parent node) and making 80 a local decision or determination constrained by the received 78 decision or determination. If a decision is made 80, then that decision is forwarded 74/82 to the node's lower priority neighbors (children neighbors). If a decision or determination is not possible, that is, the node is unable to satisfy its internal constraints while following the received 78 decision or determination, then the node backtracks the overall decision making process by informing the node that sent the received 78 decision or determination that such decision or determination is not acceptable. Backtracking is a well known approach for searching distributed constraints and further explanation may be found elsewhere. The overall affect of the search approach is that the nodes cooperate to find a solution to a distributed constraint problem.
In the field of distributed constraints, the search process described above is often called synchronous searching. With synchronous searching, one node awaits the result from another node. However, asynchronous searching can be used as well. With asynchronous searching, a node searches for a local solution (and propagates it to lower priority nodes) even if it is not yet informed of some parent decision.
Returning to the vehicle specification consensus example, the departments may be prioritized so that the decision or output of the engineering department has highest priority, the output of the design department is next in priority, and the marketing department has the next priority. If prioritized as above, when the engineering department outputs a specification for the engine, the design department must abide by the engine specification when determining a body design. When the design department outputs a body design the marketing department must determine a marketing plan that respects the body design. Each node must respect the output or decision of the node above it. If the order is changed then the global solution may also change. If for some reason the design department cannot find a local solution or decision that will agree with the engineering department, the search will backtrack to that department, in effect telling the engineering department it must change its current solution. In practice, each department may be represented by a corresponding node, such as a computer or an autonomous network agent, perhaps implemented using the Agent Communication Language (ACL).
Previous search algorithms for solving distributed constraint problems have relied on adaptations such as backtracking, local reprioritization (sometimes called weak commitment searching), centralized control, etc. However, fast and reliable solutions have been elusive. There is a need to efficiently solve distributed constraint problems.